package models

// 试卷表
type ExamPaper struct {
	ExamName         string `gorm:"type:varchar(100);not null;comment:试卷名称" json:"exam_name"`
	ExamType         string `gorm:"type:varchar(50);not null;comment:试卷类型" json:"exam_type"`
	TotalScore       int    `gorm:"type:int;not null;comment:试卷总分" json:"total_score"`
	TotalQuestions   int    `gorm:"type:int;not null;comment:总题数" json:"total_questions"`
	GenerationMethod string `gorm:"type:varchar(20);not null;comment:生成方式" json:"generation_method"`
	GenerationTime   string `gorm:"type:varchar(50);not null;comment:生成时间" json:"generation_time"`
	UserID           *uint  `gorm:"type:bigint;comment:用户ID" json:"user_id"`
	Status           int8   `gorm:"type:tinyint;default:1;comment:状态" json:"status"`
	BaseModel

	// 关联字段
	QuestionConfigs []ExamQuestionConfig `gorm:"foreignKey:ExamPapersID" json:"question_configs"`
	Questions       []ExamQuestion       `gorm:"foreignKey:ExamPapersID" json:"questions"`
}

// 题型配置表
type ExamQuestionConfig struct {
	ExamPapersID     uint   `gorm:"type:bigint;not null;comment:试卷ID" json:"exam_papers_id"`
	QuestionType     string `gorm:"type:varchar(20);not null;comment:题型" json:"question_type"`
	ScorePerQuestion int    `gorm:"type:int;not null;comment:每题分值" json:"score_per_question"`
	TotalScore       int    `gorm:"type:int;not null;comment:该题型总分" json:"total_score"`
	QuestionCount    int    `gorm:"type:int;not null;comment:题目数量" json:"question_count"`
	BaseModel
}

// 题目表
type ExamQuestion struct {
	ExamPapersID   uint   `gorm:"type:bigint;not null;comment:试卷ID" json:"exam_papers_id"`
	QuestionType   string `gorm:"type:varchar(20);not null;comment:题型" json:"question_type"`
	QuestionIndex  int    `gorm:"type:int;not null;comment:题目序号" json:"question_index"`
	QuestionText   string `gorm:"type:text;not null;comment:题目内容" json:"question_text"`
	Options        []byte `gorm:"type:json;comment:选项" json:"options"`
	CorrectAnswer  string `gorm:"type:varchar(50);comment:正确答案" json:"correct_answer"`
	CorrectAnswers []byte `gorm:"type:json;comment:正确答案(多选题)" json:"correct_answers"`
	AnswerOutline  []byte `gorm:"type:json;comment:答题要点" json:"answer_outline"`
	BaseModel
}

// 用户答案表
type ExamUserAnswer struct {
	ExamPapersID    uint   `gorm:"type:bigint;not null;comment:试卷ID" json:"exam_papers_id"`
	UserID          uint   `gorm:"type:bigint;not null;comment:用户ID" json:"user_id"`
	ExamQuestionsID uint   `gorm:"type:bigint;not null;comment:题目ID" json:"exam_questions_id"`
	UserAnswer      string `gorm:"type:varchar(50);comment:用户答案" json:"user_answer"`
	UserAnswers     []byte `gorm:"type:json;comment:用户答案(多选题)" json:"user_answers"`
	IsCorrect       *int8  `gorm:"type:tinyint;comment:是否正确" json:"is_correct"`
}
